/*--------------------------------------------------------------------------------------------------------------------
 *  -------------------------------------------------------------------------------------------------------------------
 *
 *  Filename: ps_api.h
 *
 *  Description: AT interface prototypes for yuge AT commands
 *
 *  History:
 *  Jan 9, 2020- Li Tang Creation of file
 *
 *  Notes:
 *
 ******************************************************************************/
#ifndef _FOTA_API_H
#define _FOTA_API_H

#include "gbl_types.h"


/*****************************************************************
* Function: nvm_remove_some_files
*
* Description:
* 	该函数用于清除一些自动生成的配置文件，重启会再次自动生成。主要用于fota前，如果空间不足时释放一些nvm空间
*   备注：	fota前通过 FDI_GetFreeSpaceSize(); 能查询当前nvm可用空间，
*				如果不足以存放fota包的情况，可以使用nvm_remove_some_files()删除一些不常用配置文件（重新会重新生成默认的）释放20-30KB空间
*
* Parameters:
* 	None
*
* Return:
* 	None
*
*****************************************************************/
void nvm_remove_some_files(void);

/*****************************************************************
* Function: fota_request
*
* Description:
* 	该函数用于发起FOTA请求。
* 
* Parameters:
* 	url		  	[in] 	 fota文件对应的http url。
* 	username	[in] 	 http校验用户名，无用户名时填NULL或者""。
* 	password	[in] 	 http校验密码，无密码时填NULL或者""。
* 	fota_cb		[in] 	 fota_cb参数： 
* 							0: 文件下载校验成功
* 							1: 文件下载校验失败
* 	rsttime	  	[in] 	 fota文件下载校验成功后延迟时间重启。
* 							0: 文件下载校验成功后不主动重启进入FOTA升级，任意时刻调用重启接口或者掉电重新上电后都会触发fota升级。
* 							>0: 文件下载校验成功后,指定时间重启进入fota升级， 单位：秒。
* Return:
* 	0 执行成功
*	-1 执行失败
*
*****************************************************************/
int fota_request(char *url, char *username, char *password, void (*fota_cb)(UINT32 result), UINT32 rsttime);


/*****************************************************************
* Function: lte_module_fota
*
* Description:
* 	该函数用于发起fota请求，支持app单独升级，以及差分升级，该差分升级中差分只针对system，即system的差分包+app的完整包。
* 
* Parameters:
* 	mode		[in] 	 0:FTP(默认不支持，需特殊sdk)，1：HTTP。
* 	url		  	[in] 	 fota文件对应的http url。
* 	username	[in] 	 http校验用户名，无用户名时填NULL或者""。
* 	password	[in] 	 http校验密码，无密码时填NULL或者""。
* 	delay_s	  	[in] 	 fota文件下载校验成功后延迟时间重启。
* 							0: 文件下载校验成功后不主动重启进入FOTA升级，任意时刻调用重启接口或者掉电重新上电后都会触发fota升级。
* 							>0: 文件下载校验成功后,指定时间重启进入fota升级， 单位：秒。
*
* 	fota_cb		[in] 	 fota_cb参数(int result, char *msg, void *data)：
*							result：
* 								0: 文件下载校验成功
* 								1: 服务器连接失败
* 								2: HTTP请求失败
* 								3: 下载的fota包校验失败
* 								4: 下载的fota包api检测失败
*                               	备注：该场景下参照fota说明，使用差分包升级（system+app），大部分场景无需升级sdk版本，特殊场景需要升级sdk对会遇到。
*                              		说明：app使用了cp不支持api，大部分情况是，随着sdk更新，新的app文件fota升级到已经烧录老版本的模块中，使用上面的差分包升级，使cp和system版本一致。
* 								5: 下载的fota包ver检测不匹配
*                               	备注：该场景下参照fota说明，使用差分包升级（system+app），大部分场景无需升级sdk版本，特殊场景需要升级sdk对会遇到。
*                               	说明：即app与cp版本不一致，api已检测，单独ver不匹配，大部分场景是可以直接升级app的，但是便于版本管理，还是建议使用上面的差分包升级，使cp和system版本一致。
* 						    	6: 其他错误
*							msg：
*								一些状态提示
*							data:
*								api传入最后一个参数
*
* 	data		[in] 	 传入回调函数的data参数：
* Return:
* 	0 执行成功
*	-1 执行失败
*
*****************************************************************/
int lte_module_fota(int mode, char *url, char *username, char *password, unsigned int delay_s, void (*fota_cb)(int, char *, void *), void *data);

#endif

